Registration between actual mobile device position and environmental model

ABSTRACT

A user interface enables a user to calibrate the position of a three dimensional model with a real-world environment represented by that model. Using a device&#39;s sensor, the device&#39;s location and orientation is determined. A video image of the device&#39;s environment is displayed on the device&#39;s display. The device overlays a representation of an object from a virtual reality model on the video image. The position of the overlaid representation is determined based on the device&#39;s location and orientation. In response to user input, the device adjusts a position of the overlaid representation relative to the video image.

CROSS REFERENCES TO RELATED APPLICATIONS

This application is a divisional of U.S. patent application Ser. No.13/782,921, filed on Mar. 1, 2013, in the United States Patent andTrademark Office, now allowed, the disclosure of which is herebyincorporated by reference herein in its entirety.

BACKGROUND

The present disclosure relates generally to user interfaces, and inparticular to a user interface that enables a user to calibrate theposition of a three dimensional model with a real-world environmentrepresented by that model.

Some applications are being developed for mobile devices which allowusers to view an “augmented reality” or “enhanced reality” view of theirreal, physical environment. Some mobile devices, including cell phonesand so-called smart phones, come equipped with cameras and graphicaldisplay screens. A camera may be mounted on the side of the device thatis opposite of the side on which the device's display is placed.Enhanced reality applications typically capture the contents currentlywithin the view of the camera in real time and present those contents onthe display. Thus, the mobile device's user can hold up the mobiledevice in front of his field of vision in order to use the device'sgraphical display as a sort of camera view finder. The device's displayshows the user everything that the camera can see. However, enhancedreality applications go further than simply presenting a view of thereal world to the device's user. Enhanced reality applications seek toregister a projected model of the world with live video of the world.Enhanced reality applications are frequently capable of overlayingreal-world view with information about the people and objects containedwithin that view. For example, an enhanced reality application mightoverlay a particular building within a view with the name of thecorporation whose office the building houses. For another example anenhanced reality application might overlay a particular street within aview with its name. For yet another example, more sophisticatedapplications might even seek to present the names of people within aview within virtual text bubbles floating above those people's faces.

In order to overlay information over a particular object within the realworld view in an accurate manner, the enhanced reality application musthave some way of determining which of the many pixels within the viewcorrespond to that particular object. The real world view might containvarious pixels corresponding to many different objects in variousdifferent locations. If the overlaid information is placed within thewrong spot within the view, then the user of the enhanced realityapplication may become confused or misinformed. Therefore, enhancedreality applications may refer to a virtual model of the real world.This virtual model might include, for each known real-world object, aset of three dimensional coordinates that represent points defining thecontours of the surface of that object. For example, the set ofcoordinates for a building would probably include at least coordinatesfor the points at the corners of the building. If the coordinatescorresponding to a particular object are connected with lines, awire-frame model of that particular object may be produced.

Possessing a particular object's set of coordinates, or its wire-framemodel, helps very little unless those coordinates are accurate. Anobject model database may include, for various real-world objects,coordinates that are meant to be meaningful within a coordinate systemthat is used by a global positioning system (GPS). When the user of anenhanced realty application uses his application at a particular place,the device on which that application executes may utilize itssensors—typically including a compass, a gyro, and a GPS—to estimatedevice attitude and displacement in reference to a given frame, and theGPS coordinates at which the device is positioned. The application mayuse this estimated location, attitude, and displacement informationobtained automatically by the sensors in order to attempt to place theuser accurately within a virtual model. If the user's position andorientation were estimated with perfect accuracy, and if the model to beportrayed were perfect, then the wire frame model of objects within theuser's vicinity could be aligned perfectly accurately with the pixelsthat correspond to objects within the device's view. Under suchcircumstances, the enhanced information could be overlaid at preciselythe correct positions within the enhanced reality view. Unfortunately,because GPS is a satellite-based technology, its positional estimatesare not fine-grained, and often can only be obtained at a relativelycoarse granularity, so that the user's actual coordinates within thewire frame model might be significantly offset from the coordinatesestimated using the mobile device's GPS. Furthermore, inaccuracies inalignment between a wire frame model and the pixels within the device'sview can result from errors in orientation, attitude, and displacementdue to inaccuracies in compass, gyro, and tilt measurements.Consequently, even the best automatically ascertained coordinate andorientation estimates for the user can cause the enhanced realityapplication to align the wire frame model with the real world viewimprecisely, producing errors in the manner in which enhancedinformation is overlaid in the enhanced view.

SUMMARY

In certain embodiments of the invention, a user interface enables a userto calibrate the position of a three dimensional model with a real-worldenvironment represented by that model. Embodiments of the invention cantake advantage of the fact that human vision excels at recognizing andassociating (1) features from a simplified three-dimensional model ofthe environment with (2) live video of the environment. Embodiments ofthe invention can employ human vision in order to assist the preciseregistration between a projected model of the environment with livevideo of the environment. Techniques are disclosed for enabling a humanto associate the features of the three-dimensional model with the livevideo. Using a device's suite of sensors, the device's location andorientation can be determined. A video image of the device's environmentcan be displayed on the device's display. The device can overlay arepresentation of an object from a virtual reality model on the videoimage. The position of the overlaid representation can be determinedbased on the device's location and orientation. In response to userinput, the device can adjust a position of the overlaid representationrelative to the video image.

In certain embodiments of the invention, a mobile device can overlay athree-dimensional grid of guidelines over a scene displayed on themobile device. The mobile device can receive video input based on agesture. The mobile device can interpret the video input in order tomodify the grid with respect to the scene being displayed. In certainembodiments of the invention, the mobile device can receive audio inputsuch as voice commands (e.g., “a little to the left,” “a little up,”etc.). The mobile device can interpret the audio input in order tomodify the grid with respect to the scene being displayed.

In certain embodiments of the invention, an intuitive “reality grab”gesture can be combined with in-situ positioning mechanisms anddatabases of location-specific and orientation-specific “fingerprints”in order to establish a mobile device's exterior orientation. Suchin-situ positioning mechanisms can include, for example, globalpositioning systems (GPS), cell towers, WiFi received signal strengthindicator (RSSI) and time-of-flight, inertial mechanisms, accelerometrymechanisms, etc. Such location-specific and orientation-specific“fingerprints” can include, for example, compass anomalies, visualregistration points, discernible directional sound, etc.

The following detailed description together with the accompanyingdrawings will provide a better understanding of the nature andadvantages of the present invention.

BRIEF DESCRIPTION

FIG. 1 is a block diagram of a computer system according to anembodiment of the present invention.

FIG. 2 is a flow diagram illustrating a technique for manually aligninga virtual model of an environment with a visual display of thatenvironment, according to an embodiment of the invention.

FIG. 3 is a flow diagram illustrating a technique for automaticallyaligning a virtual model of an environment with a visual display of thatenvironment based on physical features automatically detected within thevisual display, according to an embodiment of the invention.

DETAILED DESCRIPTION

FIG. 1 illustrates a computer system 100 according to an embodiment ofthe present invention. Computer system 100 can be implemented as any ofvarious computing devices, including, e.g., a desktop or laptopcomputer, tablet computer, smart phone, personal data assistant (PDA),or any other type of computing device, not limited to any particularform factor. Computer system 100 can include processing unit(s) 105,storage subsystem 110, input devices 120, display 125, network interface135, a camera 145, and bus 140.

Processing unit(s) 105 can include a single processor, which can haveone or more cores, or multiple processors. In some embodiments,processing unit(s) 105 can include a general-purpose primary processoras well as one or more special-purpose co-processors such as graphicsprocessors, digital signal processors, or the like. In some embodiments,some or all processing units 105 can be implemented using customizedcircuits, such as application specific integrated circuits (ASICs) orfield programmable gate arrays (FPGAs). In some embodiments, suchintegrated circuits execute instructions that are stored on the circuititself. In other embodiments, processing unit(s) 105 can executeinstructions stored in storage subsystem 110.

Storage subsystem 110 can include various memory units such as a systemmemory, a read-only memory (ROM), and a permanent storage device. TheROM can store static data and instructions that are needed by processingunit(s) 105 and other modules of electronic device 100. The permanentstorage device can be a read-and-write memory device. This permanentstorage device can be a non-volatile memory unit that storesinstructions and data even when computer system 100 is powered down.Some embodiments of the invention can use a mass-storage device (such asa magnetic or optical disk or flash memory) as a permanent storagedevice. Other embodiments can use a removable storage device (e.g., afloppy disk, a flash drive) as a permanent storage device. The systemmemory can be a read-and-write memory device or a volatileread-and-write memory, such as dynamic random access memory. The systemmemory can store some or all of the instructions and data that theprocessor needs at runtime.

Storage subsystem 110 can include any combination of computer readablestorage media including semiconductor memory chips of various types(DRAM, SRAM, SDRAM, flash memory, programmable read-only memory) and soon. Magnetic and/or optical disks can also be used. In some embodiments,storage subsystem 110 can include removable storage media that can bereadable and/or writeable; examples of such media include compact disc(CD), read-only digital versatile disc (e.g., DVD-ROM, dual-layerDVD-ROM), read-only and recordable Blu-Ray® disks, ultra density opticaldisks, flash memory cards (e.g., SD cards, mini-SD cards, micro-SDcards, etc.), magnetic “floppy” disks, and so on. The computer readablestorage media do not include carrier waves and transitory electronicsignals passing wirelessly or over wired connections.

In some embodiments, storage subsystem 110 can store one or moresoftware programs to be executed by processing unit(s) 105. “Software”refers generally to sequences of instructions that, when executed byprocessing unit(s) 105 cause computer system 100 to perform variousoperations, thus defining one or more specific machine implementationsthat execute and perform the operations of the software programs. Theinstructions can be stored as firmware residing in read-only memoryand/or applications stored in magnetic storage that can be read intomemory for processing by a processor. Software can be implemented as asingle program or a collection of separate programs or program modulesthat interact as desired. Programs and/or data can be stored innon-volatile storage and copied in whole or in part to volatile workingmemory during program execution. From storage subsystem 110, processingunit(s) 105 can retrieves program instructions to execute and data toprocess in order to execute various operations described herein.

A user interface can be provided by one or more user input devices 120,display device 125, and/or and one or more other user output devices(not shown). Input devices 120 can include any device via which a usercan provide signals to computing system 100; computing system 100 caninterpret the signals as indicative of particular user requests orinformation. In various embodiments, input devices 120 can include anyor all of a keyboard, touch pad, touch screen, mouse or other pointingdevice, scroll wheel, click wheel, dial, button, switch, keypad,microphone, and so on.

Display 125 can display images generated by electronic device 100 andcan include various image generation technologies, e.g., a cathode raytube (CRT), liquid crystal display (LCD), light-emitting diode (LED)including organic light-emitting diodes (OLED), projection system, orthe like, together with supporting electronics (e.g., digital-to-analogor analog-to-digital converters, signal processors, or the like). Someembodiments can include a device such as a touchscreen that function asboth input and output device. In some embodiments, other user outputdevices can be provided in addition to or instead of display 125.Examples include indicator lights, speakers, tactile “display” devices,printers, and so on.

In some embodiments, the user interface can provide a graphical userinterface, in which visible image elements in certain areas of display125 are defined as active elements or control elements that the user canselect using user input devices 120. For example, the user canmanipulate a user input device to position an on-screen cursor orpointer over the control element, then click a button to indicate theselection. Alternatively, the user can touch the control element (e.g.,with a finger or stylus) on a touchscreen device. In some embodiments,the user can speak one or more words associated with the control element(the word can be, e.g., a label on the element or a function associatedwith the element). In some embodiments, user gestures on atouch-sensitive device can be recognized and interpreted as inputcommands; these gestures can be but need not be associated with anyparticular array in display 125. Other user interfaces can also beimplemented.

Network interface 135 can provide voice and/or data communicationcapability for electronic device 100. In some embodiments, networkinterface 135 can include radio frequency (RF) transceiver componentsfor accessing wireless voice and/or data networks (e.g., using cellulartelephone technology, advanced data network technology such as 3G, 4G orEDGE, WiFi (IEEE 802.11 family standards, or other mobile communicationtechnologies, or any combination thereof), GPS receiver components,and/or other components. In some embodiments, network interface 135 canprovide wired network connectivity (e.g., Ethernet) in addition to orinstead of a wireless interface. Network interface 135 can beimplemented using a combination of hardware (e.g., antennas,modulators/demodulators, encoders/decoders, and other analog and/ordigital signal processing circuits) and software components.

Bus 140 can include various system, peripheral, and chipset buses thatcommunicatively connect the numerous internal devices of electronicdevice 100. For example, bus 140 can communicatively couple processingunit(s) 105 with storage subsystem 110. Bus 140 also connects to inputdevices 120 and display 125. Bus 140 also couples electronic device 100to a network through network interface 135. In this manner, electronicdevice 100 can be a part of a network of multiple computer systems(e.g., a local area network (LAN), a wide area network (WAN), anIntranet, or a network of networks, such as the Internet. Bus 140further enables communication between electronic device 100 and anaccessory via accessory interface 155. Any or all components ofelectronic device 100 can be used in conjunction with the invention.

Some embodiments include electronic components, such as microprocessors,storage and memory that store computer program instructions in acomputer readable storage medium. Many of the features described in thisspecification can be implemented as processes that are specified as aset of program instructions encoded on a computer readable storagemedium. When these program instructions are executed by one or moreprocessing units, they cause the processing unit(s) to perform variousoperation indicated in the program instructions. Examples of programinstructions or computer code include machine code, such as is producedby a compiler, and files including higher-level code that are executedby a computer, an electronic component, or a microprocessor using aninterpreter.

It will be appreciated that computer system 100 is illustrative and thatvariations and modifications are possible. Computer system 100 can haveother capabilities not specifically described here (e.g., mobile phone,global positioning system (GPS), power management, one or more cameras,various connection ports for connecting external devices or accessories,etc.). Further, while computer system 100 is described with reference toparticular blocks, it is to be understood that these blocks are definedfor convenience of description and are not intended to imply aparticular physical arrangement of component parts. Further, the blocksneed not correspond to physically distinct components. Blocks can beconfigured to perform various operations, e.g., by programming aprocessor or providing appropriate control circuitry, and various blocksmight or might not be reconfigurable depending on how the initialconfiguration is obtained. Embodiments of the present invention can berealized in a variety of apparatus including electronic devicesimplemented using any combination of circuitry and software.

Human Calibration of Virtual Models to Real World Views

Although computing devices become increasingly sophisticated by the day,a human being's visual capability to recognize objects within the realworld around him remains vastly superior to that of any computingdevice. Certain embodiments of the invention seek to take advantage of ahuman being's superior visual recognition abilities in order tocalibrate a virtual model of the human's local environment with areal-world view of that human's local environment.

FIG. 2 is a flow diagram illustrating a technique 200 for manuallyaligning a virtual model of an environment with a visual display of thatenvironment, according to an embodiment of the invention. In block 202,a mobile device can capture an image of an environment through thedevice's camera. In block 204, the mobile device can present thecaptured image on the device's display. In block 206, the mobile devicecan use its internal sensors, such as a GPS, a gyro, and a compass, toestimate a current position, attitude, and displacement of the mobiledevice. The device can use its sensors to estimate the pitch, yaw, androll of the device within three-dimensional space, thus estimating thedevice's camera's exterior orientation relative to six degrees offreedom. In block 208, the mobile device can use the estimated positionand three-dimensional exterior camera orientation in order to estimate alocation and direction of the mobile device within a virtual model ofthe environment. In block 210, based on the estimated location andthree-dimensional exterior camera orientation of the mobile devicewithin the virtual model, the mobile device can overlay the image of theenvironment with a portion of a virtual wire frame model of objectsoccurring within the environment. The virtual model information can bestored within the local memory of the mobile device. The virtual modelinformation can be downloaded to the mobile device over one or morenetworks from one or more servers that are remote to the mobile device.Because the sensors have limited accuracy, the overlaid wire frame modelis likely to be offset from where it should be placed within the image.The virtual model of the environment can include one or more streetsand/or buildings, for example. In one embodiment, the virtual framemodel includes one or more interior features of a building, such as awall, a door, a window, a ceiling, a floor, furniture, appliances,wall-hangings, etc.

In block 212, the mobile device can receive user input that indicateschanges that should be made to the orientation, position, and/or size ofthe portion of the wire frame model that is overlaid on the image. Theuser input can indicate changes to scaling or alignment throughtranslation or rotation, for example. For example, the user input cantake the form of physical gestures that the user makes relative to atouchscreen display on which the image is being presented. Sliding afinger in a particular direction across the touchscreen display caninstruct the device to move the wire frame model in that particulardirection. Making a squeezing or expanding motion on the surface of thetouchscreen display can instruct the device to shrink or increase thesize of the wire frame model in accordance with that motion. Othergestures made relative to the surface of the touchscreen display caninstruct the device to rotate the wire frame model around an axiscentered on the device in a direction corresponding to the gesture. Theextent to which the wire frame model is to be repositioned can be basedon the extent of the gestures made; a very expansive gesture mayinstruct the device to make an extensive repositioning, while arelatively minor gesture may instruct the device to make merely smalladjustments to the orientation of the wire frame model. Although in oneembodiment of the invention the mobile device receives user input in theform of gestures made relative to a touchscreen display, in analternative embodiment of the invention, other forms of user input cansimilarly instruct the mobile device to make such realignments. Forexample, in one embodiment of the invention, the mobile device's displaycan overlay the image of the real-world environment with user interfacecontrols which, when activated by the user, instruct the mobile deviceto perform realignments of the kinds described above.

In block 214, the mobile device can recalculate the position andorientation of the mobile device within the virtual model based on thechanges indicated by the user input received in block 212. For example,the mobile device can determine that the user is actually two feet tothe left of the position that was estimated by the mobile device's GPS,and the mobile device can determine that the user is actually facing ahalf a degree further clockwise along some axis in three-dimensionalspace than the exterior camera orientation that was estimated by themobile device's compass.

In block 216, the mobile device can re-overlay the image of thereal-world environment with a revised portion of the wire frame modelbased on the position and orientation recalculated in block 214. Incertain embodiments of the invention, this process can be repeated untilthe mobile device's user is satisfied, based on his visual perception,that the wire frame model overlaid on the image shown on the display issufficiently aligned with the real-world objects represented within thatimage.

In block 218, the mobile device can receive user input that indicatesthat the user is satisfied with the new alignment of the wire framemodel to the real-world objects represented with the image. For example,the user input can indicate that the user wishes to “lock-in” thecurrently calculated position and orientation coordinate information. Inblock 220, in response to receiving such input, the mobile device cancause the currently calculated position and orientation coordinateinformation to be stored persistently within the local memory of themobile device. In one embodiment of the invention, in response toreceiving such input, the mobile device can modify some or all of thethree dimensional coordinates specified by the virtual model to reflectthe corrections made by the user. Thereafter, the mobile device cancontinue to use the human-corrected position and orientation informationto align the virtual model with objects in the real-world environment.Thus, if the mobile device's user moves or turns, thereby causing themobile device to move or turn, then the device's sensors (e.g., agyroscope) can detect this movement and automatically recalculate theuser's new position and orientation relative to the human-correctedposition and orientation information. Based on the alignment between thevirtual model and the real-world environment, the mobile device canoverlay images of real-world objects shown on the mobile device'sdisplay with information pertaining to and mapped to those objects(e.g., names, prices, menus, addresses, phone numbers, ages, weights,histories, etc.), so that the overlaid information is correctly placedin the image relative to the objects to which the overlaid informationpertains.

In one embodiment, after the virtual model has been aligned with thepixels in the real-world image, the mobile device user can use themobile device's touchscreen interface to interact with the image andmodify the image. For example, the user might interact with the image inthe manner that causes a wall of a building to vanish or “peel away” sothat the user can then view the wire frame structure of the building'sinterior. Under such circumstances, the pixels corresponding to theremoved surface may be replaced, on the display, with filled-in pixelsrepresenting the building's interior, including floors, doors, windows,etc. Essentially, in one embodiment, once the virtual model has beenproperly aligned with the real-world image, the mobile device's user canexercise a form of “x-ray vision” relative to the world shown on hismobile device's display.

Visually Detected Alignment Gestures

As is discussed above, in one embodiment of the invention, a mobiledevice user can perform gestures relative to a touchscreen display ofhis mobile device in order to align a wire frame, representing a portionof a virtual model, with objects represented within an image captured byhis mobile device's camera. In an alternative embodiment of theinvention, the mobile device's camera can capture images of the user'shand within the environment. For example, using one hand, the user mayhold his mobile device in a manner that causes an image of a portion ofhis real-world environment to be captured and presented on his mobiledevice's display. The user can hold his other hand out into the field ofvision of the mobile device's camera so that the image of that hand iscaptured along with the remainder of the portion of the real-worldenvironment. In such an embodiment, the mobile device can userecognition algorithms to determine automatically that a hand inrepresented within the image. The mobile device can use such recognitionalgorithms in order to detect a particular configuration of fingers thatrepresents a gesture that the user is making with his hand in the image.The mobile device can analyze several different images, representing asame scene over a period of time, in order to detect, automatically, agesture that the user is making with his hand. The mobile device canthen match this gesture against a database of known gestures in order tolocate an alignment action that is mapped, in the database, to thatgesture.

Within the database, different gestures can be mapped to differentalignment actions. In one embodiment, a grasping gesture indicates tothe mobile device that the user desires to re-align the wire framecurrently being shown on the display. In response to detecting such agrasping gesture, the mobile device can look for further future gesturesthat indicate the types of realignments that are to be performed.Conversely, in one embodiment, a releasing gesture indicates to themobile device that the user is finished re-aligning the wire framecurrently being shown on the display. In response to detecting such areleasing gesture, the mobile device can “lock-in” the re-alignmentsthat the user has made since the previous making of the graspinggesture.

While the user makes gestures by moving his hand within the camera'sfield of vision, the mobile device can move the wire frame around thedisplay in a direction along some axis within three-dimensional spacethat is consistent with the movement of the user's hand. For example, inresponse to detecting the user's grasped hand moving in a particulardirection after initially detecting the grasping gesture, the mobiledevice can re-align the wire frame within the presented image towardthat particular direction. In one embodiment of the invention, themobile device can move the wire frame in solidarity with the user'sgrasped hand against the real-world environment shown on the display, sothat as long as the user's hand remains grasped, the wire frame moves asthough it were being held in the user's hand. Thus, the extent to whichthe wire frame moves against the real-world environment can correspondto the extent to which the user moves his grasped hand within thereal-world environment. Other gestures, such as a twisting motion madewith the grasped hand about some axis in three-dimensional space, cancause the mobile device to rotate the wire frame against the real-worldenvironment in the direction of the grasped hand's rotation about theaxis and to the extent of the grasped hand's rotation. A pulling orpushing motion made by a grasped hand within the camera's field ofvision can cause the mobile device to move the wire frame toward or awayfrom the user's position to an extent that corresponds to the extremityof the pulling or pushing motion. In one embodiment of the invention,movements made by an ungrasped hand within the camera's field of visiondo not cause the mobile device to re-align the wire frame. In oneembodiment of the invention, a pinching motion made with two fingers ofa hand within the camera's field of vision has an effect similar to thatdescribed above relative to a grasping hand. In one embodiment of theinvention, certain gestures correspond to various different affinetransformations, which can adjust the orientation of the visual modelwithin a user-specified plane.

Audibly Detected Alignment Commands

In an alternative embodiment of the invention, an intelligent softwareagent, capable of performing voice recognition, can execute on themobile device. In such an embodiment, the intelligent software agent candetect audible vocal commands received through the mobile device'smicrophone. For example, the intelligent software agent might detectsuch commands as “move left,” “move right,” “move up,” “move down,”“move forward,” or “move backward.” In response to receiving such avocal command, the intelligent software agent can match the commandagainst a database of vocal commands that are mapped to differentcalibration actions. In response to determining that a received vocalcommand matches a particular calibration action (e.g., moving the visualmodel left or right relative to the real-world environment beingdisplayed), the intelligent software agent can cause the mobile deviceto manipulate the visual model and its corresponding wire frameaccording to the particular calibration action.

Aggregating Multiple Calibrations

In one embodiment of the invention, the process discussed above wherebya user aligns a virtual model of an environment with a real-worlddisplay of that environment affects only the version of the virtualmodel that is persistently stored within the local memory of that user'smobile device. However, in an alternative embodiment of the invention,after a mobile device user “locks in” the calibrations made using thetechniques discussed above, the mobile device uploads those calibrationsover one or more wireless networks to a central repository in which adefinitive edition of the virtual model is stored. Over time, manydifferent calibrations from many different mobile devices can beuploaded to the central repository. In one embodiment, these manydifferent calibrations can be compared to each other to determine whichcalibrations tend to agree with each other. Calibrations that are veryclose to most other calibrations are more likely to be correct, since itis unlikely that many different users would have made incorrectcalibrations. Calibrations that are significantly unlike most othercalibrations are likely to be incorrect, and can be discarded after asufficient quantity of comparisons have been made. After a set ofcalibrations that is most likely accurate has been collected frommultiple different mobile devices over a period of time, the centralrepository can aggregate those calibrations in order to adjust the threedimensional coordinates of the definitive edition of the virtual model.For example, the central repository can average the calibrations andthen modify the coordinates of the definitive edition of the virtualmodel based on the averaged calibrations. After adjusting the definitiveedition of the virtual model in this manner, the central repository canpush the adjusted definitive edition to all mobile devices of which thecentral repository is aware, e.g., through a software update.Additionally or alternatively, thereafter, whenever a new mobile devicerequests a download of the definitive edition of the virtual model forthe first time, the central repository may transmit, to that mobiledevice, the definitive edition that has been adjusted using theaggregated calibrations of many different mobile devices.

Marker-Based Alignment

Certain embodiments of the invention discussed above involve a mobiledevice calibrating a virtual model of an environment with a real-worldvisual display of that environment based on human interactions with thedevice. In an alternative embodiment of the invention, a mobile devicecan automatically calibrate such a virtual model to such a real-worldvisual display automatically, without any human interaction, based onvisual markers automatically recognized within the real-world image. Inone embodiment, unique markers are deliberately placed within areal-world environment. The markers are unique in the sense that theyare not found elsewhere by chance in the environment, and thereforeserve as positive identifications of locations in the environment. Theexistence of these unique markers in the real-world environment is knownto the generator of the virtual model. The places where these uniquemarkers occur is encoded into the virtual model. For example, the threedimensional coordinates of each such marker may be specified within thevirtual model. In one embodiment of the invention, the mobile device canbe configured to detect these markers whenever they come into the viewof the mobile device's camera during execution of the enhanced realityapplication. In response to detecting that such a marker is presentwithin the real-world image being presented on the mobile device'sdisplay, the mobile device can automatically calibrate the wire framecorresponding to the virtual model with the real-world image by aligningthe position of the unique marker in the virtual model with the positionof the pixels of the corresponding unique marker within the real-worldimage. By shifting the position of the virtual model in this manner, theentire virtual model can be calibrated. Indeed, in one embodiment of theinvention, the mobile device can visually determine its location withinthe real-world environment without the aid of GPS by visually locating,in a captured image, a unique physical feature, such as a uniquepainting on a wall or an outline of a unique building, whose coordinateswithin the virtual model are known. The mobile device can then visuallyestimate its distance from and orientation relative to the uniquephysical feature's known coordinates.

Although in one embodiment the markers are deliberately designed andplaced within the real-world environment so as to be easily detectable(e.g., by having a distinctive visual appearance), in an alternativeembodiment, the real-world markers used to align the virtual model inthe manner discussed above are not deliberately designed, but, instead,can be physical features that would regularly occur in the real-worldenvironment even in the absence of the virtual model. For example, thesephysical features can be regularly occurring components that are knownby the designer of the virtual model only to occur at certain locationsin the real-world environment. Thus, for example, the markers can bephysical features such as light fixtures that have a certain shape thatno other light fixture in the real-world environment has. The markerscan be patterns of tile that occur in a specific place on a floor andnowhere else, for example. Combinations of non-unique physical features,arranged in a pattern that only occurs in known places in the real-worldenvironment, also can serve as markers, even though the individualfeatures might be commonplace in the environment (so long as the patternthat they form is not commonplace). The markers described above can bestored within a shared database of markers stored on a remote server.Using techniques described below, mobile devices within an environmentcan cooperate to build up the marker data such a database of markers sothat other yet mobile devices can benefit from the information storedtherein.

Mobile devices can sense characteristics of an environment at least inpart by using built-in global positioning systems of those mobiledevices. However, sometimes in indoor venues such as buildings, globalpositioning systems are less effective at sensing environmentalcharacteristics because the walls and ceilings of the venues canobstruct the reception of satellite signals upon which the globalpositioning systems rely. Furthermore, global positioning systemssometimes can give only a coarse indication of a geographical location,and imprecision can be undesirable when location within a more confinedspace such as a building is called for.

Therefore, in an embodiment of the invention, a mobile device canestimate its location using one or more of, or a combination of severalof, the following: cellular telephone signals, WiFi network signals,Bluetooth signals, other radio frequency signals, etc. Softwareexecuting on a mobile device can be configured with informationindicating a source and location of each of these signals relative to avenue. By determining the relative strength of each such signal andusing information indicating the location of the source of each suchsignal, the mobile device can automatically estimate its currentlocation within the venue even without the use of a global positioningsystem. For example, if a first signal from a first source is relativelyweak, but if a second signal from a second source is relatively strong(relative to the first signal), then the mobile device can estimate thatit is closer to the location of the second source than it is to thelocation of the first source. In one embodiment of the invention, themobile device can use a compass and accelerometer to determine, overtime, a direction and speed at which its user is moving within a venue.As the mobile device moves through the venue, the mobile device canmeasure the strengths of various signals over time. Based on thesemeasurements, the mobile device can determine that as it moves in aparticular direction at a particular speed, some of the signals fromsome of the sources may become stronger at certain rates, while othersof the signals from others of the sources may become weaker at certainrates. Based at least in part on the direction and speed of the mobiledevice's movement, the measured differing strengths of signals fromvarious sources over a time interval, and the known geographicallocations of the sources of those signals, the mobile device canautomatically determine its approximate distance from each of thosesources over the time interval. Thus, the mobile device canautomatically determine its position and/or orientation within thevenue, and can transmit this positional and orientation informationwirelessly to a remote server, which can build up a database of suchpositional and orientation information from multiple mobile devices.

In one embodiment of the invention, samples of the radio frequency (RF)environment are taken at various geographical points within a venue.Given that a sensory device can encounter different strengths ofdifferent RF signals at each point, a different RF “fingerprint” can beascertained and recorded by the sensory device at each point in thesampling. A user of the sensory device can store a mapping between hisknown geographical coordinates (which can be determined using anyapproach) and the RF fingerprint sensed by the sensory device at thosecoordinates. Thus, a database of mappings between geographicalcoordinates/orientations and corresponding RF fingerprints for aparticular venue can be constructed. Later, when other mobile devicesare present within the particular venue, those mobile devices can usetheir sensors to detect the distinct RF fingerprints at their currentlocations. Then, by consulting the database pertaining to its currentvenue, a mobile device can estimate its current coordinates andorientation by locating the currently sensed RF fingerprint anddetermining the geographical coordinates and orientation that are mappedto that RF fingerprint; those geographical coordinates and orientationare the mobile device's current geographical coordinates andorientation. The mobile device can then transmit these geographicalcoordinates and orientation wirelessly to a remote server.Alternatively, if the RF fingerprint database is stored at the remoteserver, then the mobile device can transmit its currently sensed RFfingerprint to the remote server, and the remote server can thenautomatically determine the mobile device's current coordinates andorientation based at least in part on that RF fingerprint.Alternatively, instead of measuring an RF fingerprint, a device canmeasure a fingerprint that is based on any kind of unique distortion ina signal detectable by any sensor or combination of sensors of thedevice. For example, in an embodiment, a device can measure afingerprint based on compass distortions detected by the device'ssensors.

In one embodiment of the invention, multiple mobile device users can usethe cameras of their mobile devices to take digital photographs atvarious locations and at various orientations within a venue orenvironment. The mobile devices can automatically tag these digitalphotographs with metadata indicative of the locations and orientationsat which the digital photographs were taken. The mobile devices canautomatically (or in response to a user's input) upload these digitalphotographs, with the associated metadata, to a remote server, which canbuild up a database of digital photographs and associated metadata. Eachsuch digital photograph can serve as a visual marker to other mobiledevices that access the information stored in the database. For example,by comparing its current camera view to a database of digital images, amobile device can automatically match its current camera view to adigital image based on visual similarities, and then use the locationand orientation metadata mapped to that matching digital image in thedatabase as an estimate of that mobile device's current location andorientation. This estimated location and orientation can then be used toalign a wire frame model of an environment with the currently vieweddigital portrayal of that environment by the mobile device's camera. Inone embodiment of the invention, to preserve the privacy of variousmobile device users that upload digital photographs to a remote serverin the manner described above, the mobile device can first remove, fromthe metadata associated with each digital photograph, specific metadatathat could potentially be used to identify the user. In one embodimentof the invention, the kinds of private information (e.g., name, address,telephone number, IP address, etc.) that a mobile device willautomatically remove from a digital image's metadata prior to uploadingthat digital image to the remote server can be defined in the mobiledevice's configuration settings by the mobile device's user.

FIG. 3 is a flow diagram illustrating a technique 300 for automaticallyaligning a virtual model of an environment with a visual display of thatenvironment based on physical features automatically detected within thevisual display, according to an embodiment of the invention. In block302, the mobile device can use its camera to capture an image of aportion of the real-world environment as a part of the execution of anenhanced reality application. In block 304, the mobile device canvisually search the captured image for physical features or patterns ofphysical features that match descriptions of markers in a storeddatabase of known markers. In block 306, in response to locating, withinthe image, a physical feature or pattern of physical features that matchknown markers, the mobile device can determine an orientation of thephysical feature or pattern of physical features. For example, themobile device can determine the orientation based on the visible angleand perspective with which the physical feature or pattern of physicalfeatures occurs within the image. Computer vision algorithms, such as,for example, RANSAC homography can be used to perform image-basedregistration and point-of-interest extraction. RANSAC homography can beused to determine the relative homography between different image pairs.These computer vision algorithms can be used to extract relative andabsolute orientation (i.e., attitude, pointing) from the camera. RANSAChomography can use robust image feature key-point detector descriptorssuch as SIFT, SURF, ORB, FREAK, FAST, etc. These correspond tounderlying algorithms that can be used to detect and described key-pointfeatures. In block 308, based on both the automatically determinedorientation of the features and the coordinates that are mapped, in thedatabase, to the markers that the features match, the mobile device cancalibrate the virtual model to the real-world environment by shiftingand/or rotating the virtual model's coordinates such that thecoordinates of the matching marker are precisely aligned with thefeatures in the real-world environment. Although an embodiment of theinvention is described in which visual markers in an environment areused to calibrate a virtual model with a real-world environment, inalternative embodiments of the invention, any kinds of markers or“fingerprints” that can be sensed by any sensors of the device—visual ornot—can be used for this purpose. For example, RF “fingerprints” can beused to perform such calibration.

Embodiments of the present invention can be realized using anycombination of dedicated components and/or programmable processorsand/or other programmable devices. The various processes describedherein can be implemented on the same processor or different processorsin any combination. Where components are described as being configuredto perform certain operations, such configuration can be accomplished,e.g., by designing electronic circuits to perform the operation, byprogramming programmable electronic circuits (such as microprocessors)to perform the operation, or any combination thereof. Further, while theembodiments described above can make reference to specific hardware andsoftware components, those skilled in the art will appreciate thatdifferent combinations of hardware and/or software components can alsobe used and that particular operations described as being implemented inhardware might also be implemented in software or vice versa.

Computer programs incorporating various features of the presentinvention can be encoded and stored on various computer readable storagemedia; suitable media include magnetic disk or tape, optical storagemedia such as compact disk (CD) or DVD (digital versatile disk), flashmemory, and other non-transitory media. Computer readable media encodedwith the program code can be packaged with a compatible electronicdevice, or the program code can be provided separately from electronicdevices (e.g., via Internet download or as a separately packagedcomputer-readable storage medium).

Thus, although the invention has been described with respect to specificembodiments, it will be appreciated that the invention is intended tocover all modifications and equivalents within the scope of thefollowing claims.

What is claimed is:
 1. A method comprising: detecting, through a camera of a mobile device, a particular pattern within an environment; locating the particular pattern in a database of patterns; determining a set of coordinates that are mapped to the particular pattern in the database; based at least in part of the set of coordinates, automatically determining a location of the mobile device within the environment; and based on the determined location of the mobile device within the environment, aligning a wire frame model of a virtual model of the environment over an image of the environment presented on a display of the mobile device in order to obtain calibration information; receiving a user lock-in input; and in response to receiving the lock-in input, sending, by the mobile device, the calibration information to a central repository configured to store a most recently updated calibration information, wherein the central repository is configured to receive and store a plurality of calibration information over a period of time and aggregates the plurality of calibration information to create an updated virtual model.
 2. The method of claim 1, further comprising: determining initial coordinates for a virtual model of the environment based on a global positioning system of the mobile device; and automatically adjusting coordinates of the virtual model based on differences between a position of a marker specified within the virtual model and a position of the pattern relative to the mobile device.
 3. The method of claim 1, wherein the pattern comprises a configuration of one or more components of a particular kind, wherein other components of the particular kind occur within the environment outside of the pattern, and wherein the pattern of the components occurs uniquely within the environment.
 4. The method of claim 1, further comprising: moving the wire frame model of the environment in response to gestures made by a user of the mobile device.
 5. The method of claim 1, wherein the wire frame model represents objects in the virtual model.
 6. The method of claim 1, further comprising displaying the wire frame model on a display; and in response to input gestures made on the display, modifying a position of the wire frame model.
 7. The method of claim 1, further comprising: receiving one or more vocal commands through a microphone of the mobile device; and in response to the one or more vocal commands, automatically adjusting a position of the wire frame model relative to the image in a manner that corresponds to the one or more vocal commands.
 8. A non-transitory computer readable-medium storing one or more instructions, which, when executed by one or more processors, cause the one or more processors to perform: detecting, through a camera of a mobile device, a particular pattern within an environment; locating the particular pattern in a database of patterns; determining a set of coordinates that are mapped to the particular pattern in the database; based at least in part of the set of coordinates, automatically determining a location of the mobile device within the environment; and based on the determined location of the mobile device within the environment, aligning a wire frame model of the environment over an image of the environment presented on a display of the mobile device in order to obtain calibration information, wherein the wire frame model is a virtual model of the environment; receiving a user lock-in input; and in response to receiving the lock-in input, sending, by the mobile device, the calibration information to a central repository configured to store a most recently updated calibration information, wherein the central repository is configured to receive and store a plurality of calibration information over a period of time and aggregates the plurality of calibration information to create an updated virtual model.
 9. The non-transitory computer readable-medium of claim 8, further comprising: determining initial coordinates for a virtual model of the environment based on a global positioning system of the mobile device; and automatically adjusting coordinates of the virtual model based on differences between a position of a marker specified within the virtual model and a position of the pattern relative to the mobile device.
 10. The non-transitory computer readable-medium of claim 8, wherein the pattern comprises a configuration of one or more components of a particular kind, wherein other components of the particular kind occur within the environment outside of the pattern, and wherein the pattern of the components occurs uniquely within the environment.
 11. The non-transitory computer readable-medium of claim 8, further comprising: moving the wire frame model of the environment in response to gestures made by a user of the mobile device.
 12. The non-transitory computer readable-medium of claim 8, wherein the wire frame model represents objects in the virtual model.
 13. The non-transitory computer readable-medium of claim 8, further comprising displaying the wire frame model on a display; and in response to input gestures made on the display, modifying a position of the wire frame model.
 14. The non-transitory computer readable-medium of claim 8, further comprising: receiving one or more vocal commands through a microphone of the mobile device; and in response to the one or more vocal commands, automatically adjusting a position of the wire frame model relative to the image in a manner that corresponds to the one or more vocal commands.
 15. A device comprising: one or more sensors; and one or more processors configured to: detect, through a camera of a mobile device, a particular pattern within an environment; locate the particular pattern in a database of patterns; determine a set of coordinates that are mapped to the particular pattern in the database; based at least in part of the set of coordinates, automatically determine a location of the mobile device within the environment; and based on the determined location of the mobile device within the environment, align a wire frame model of the environment over an image of the environment presented on a display of the mobile device in order to obtain calibration information; receiving a user lock-in input; and in response to receiving the lock-in input, sending, by the mobile device, the calibration information to a central repository configured to store a most recently updated calibration information, wherein the central repository is configured to receive and store a plurality of calibration information over a period of time and aggregates the plurality of calibration information to create an updated virtual model.
 16. The device of claim 15, further comprising: determining initial coordinates for a virtual model of the environment based on a global positioning system of the mobile device; and automatically adjusting coordinates of the virtual model based on differences between a position of a marker specified within the virtual model and a position of the pattern relative to the mobile device.
 17. The device of claim 15, wherein the pattern comprises a configuration of one or more components of a particular kind, wherein other components of the particular kind occur within the environment outside of the pattern, and wherein the pattern of the components occurs uniquely within the environment.
 18. The device of claim 15, further comprising: moving the wire frame model of the environment in response to gestures made by a user of the mobile device.
 19. The device of claim 15, wherein the wire frame model represents objects in the virtual model.
 20. The device of claim 15, further comprising displaying the wire frame model on a display; and in response to input gestures made on the display, modifying a position of the wire frame model. 